package com.uc3m.dsic.gestorZoo;

import java.sql.*;

/**
 * En esta clase se encuentran todos las operaciones que tratan principalmente
 * con tickets
 * 
 * @author Elena
 * @version 1.0
 */
public class GestorTickets {

    /**
     * Dado un identificador de un zoo, devuelve cuanto tickets se han vendido
     *
     * @param id_zoo
     *          identificador del zoo que queremos extraer la informacion
     *
     * @return El numero de tickets vendidos.
     *
     * @throws Exception si se produce cualquier tipo de error.
     */
    public int getTicketsByZoo(String id_zoo) throws Exception {
     
        ResultSet rsZoo, rsTicket;

        GestorZooInterface gtemp = new GestorZooAplicacion();
        rsZoo = gtemp.getTabla(GestorZooAplicacion.Tablas.ZOO);
        
        String idZoo;
        int aforoZoo = 0;
        int entradasVendidas = 0;
        int tickets;
        int aux = 0;

        while (rsZoo.next()) {
            idZoo = rsZoo.getString(1).toUpperCase();
            if (id_zoo.trim().toUpperCase().equals(idZoo)) {
                aforoZoo = rsZoo.getInt(4); //campo Aforo
                entradasVendidas = rsZoo.getInt(7);//campo Entradas
                aux = 1;
                break; //salimos, solo puede haber 1 zoo
            }
        }
        /* ahora calculamos el numero de tickets */
        tickets = aforoZoo - entradasVendidas;

        /* se verifica venta de tickets no supera aforo */
        if (tickets < 0) {
            throw new ZooException("La venta de tickets ha"
                    + " superado el aforo del zoo: " + id_zoo);
        /* se verifica que el zoo haya existido*/
        } else if(aux == 0){
            throw new ZooException("No existe ninguna ocurrencia en la "
                    + "base de datos con la cadena proporcionada");
        }

        return tickets;
    }

    /**
     * Obtiene el resultado concreto de la base de datos proporcionado por un
     * identificador de ticket
     *
     * @param id
     *          Identificador de Zoo alque pertenece el ticket
     * @param tipo
     *          Tipo de ticket
     * @return Fila con todos los campos que coinciden con la clave proporcionada
     * @throws ZooException
     * @throws Exception
     */
    public Ticket getTicketbyId(String id, String tipo)
            throws ZooException, Exception {

        ResultSet rstemp;
        Ticket nuevo_ticket = null;

        String idZoo, tipoTicket;
        int precioTicket;

        
        GestorZooInterface gtemp = new GestorZooAplicacion();
        rstemp = gtemp.getTabla(GestorZooAplicacion.Tablas.TICKET);

        while (rstemp.next()) {
            idZoo = rstemp.getString(1).toUpperCase();
            tipoTicket = rstemp.getString(2).toUpperCase();
            if (id.trim().toUpperCase().equals(idZoo)
                    && tipo.trim().toUpperCase().equals(tipoTicket)) {
                  precioTicket = rstemp.getInt(3);
                  nuevo_ticket = new Ticket(idZoo, tipoTicket, precioTicket);
                  //sala_nueva = new Sala(rstemp); //sala del puntero actual
                  break; //salimos, solo puede haber una id_sala unico
            }
        }
        return nuevo_ticket;
    }
}
